如何使用Matlab对数据进行预处理 您所在的位置:网站首页 matlab busy怎么办 如何使用Matlab对数据进行预处理

如何使用Matlab对数据进行预处理

2023-06-08 22:19| 来源: 网络整理| 查看: 265

0 分享至

用微信扫码二维码

分享至好友和朋友圈

如何使用Matlab对数据进行预处理

在对于时间序列数据(例如股票价格等)进行统计分析,往往需要对数据进行平滑处理,我们介绍基于MATLAB的数据处理方法,本次我们主要讲解smooth函数的用法

1.1 smooth函数

Matlab曲线拟合工具箱中提供了smooth函数,用来对数据进行平滑处理,其调用格式如下:

1)xx = smooth(x)

利用移动平均滤波器对列向量x进行平滑处理,并返回与x等长的列向量xx。移动平均滤波器的默认窗口为5,xx中元素的计算方式如下:

xx(1) = x(1)

xx(2) = (x(1)+x(2)+x(3))/3

xx(3) = (x(1)+x(2)+x(3)+x(4)+x(5))/5

xx(4) = (x(2)+x(3)+x(4)+x(5)+x(6))/5

xx(5) = (x(3)+x(4)+x(5)+x(6)+x(7))/5

2)xx = smooth(x,span)

用span参数指定移动平均滤波器的宽度,span为奇数。

3)xx = smooth(x,method)

用method参数指定平滑数据的方法,method是字符串变量,可用的字符串见下表1:

表1 smooth参数支持的method参数值列表

4)xx = smooth(x,span,method)

对于由method参数指定的平滑方法,用span参数指定滤波器的窗宽。对loess和lowess方法,span是一个小于或等于1的数,表示占全体数据点总数的比例;对于移动平均法和Savitzky- Golay法,span必须是一个正的奇数,只要用户输人span是一个正数, smooth丽数内部会自动把span转为正的奇数。

5)xx = smooth(x,'sgolay', degree)

利用Savitzky- Golay方法平滑数据,此时用degree参数指定多项式模型的阶数。degree是一个整数,取值介于0和span-1之间。

6)xx = smooth(x, span,' sgolay' , degree)

用span参数指定Savitzky-Golay滤波器的窗宽。span必须是一个正的奇数,degree是一个 整数,取值介于0和span-1 之间。

7) xx = smooth(x,y, ..)

同时指定x数据。如果没有指定x,smooth函数中自动令x=1:length(y)。当x是非.均匀数据或经过排序的数据时,用户应指定x数据。如果x是非均匀数据而用户没有指定method参数,smooth函数自动用lowess方法。如果数据平滑方法要求x是经过排序的数据,smooth函数自动对x进行排序。

【例题1】

产生一列正弦波信号,加入噪声信号,调用smooth函数对加入噪声的正弦函数进行滤波(平滑处理)。

思路:

1. 调用smooth函数进行加噪数据的平滑处理;

2. 产生加噪正弦波信号;

3. 绘制加噪波形图。

解题步骤:

1)构建数据

t = linspace(0,2*pi,500)'; % 产生一个从0到2*pi的向量,长度为500

y = 100*sin(t); % 产生正弦波信号

% 产生500行1列的服从N(0,152)分布的随机数,作为噪声信号

noise = normrnd(0,15,500,1);

y = y + noise; % 将正弦波信号加入噪声信号

2)制作基础图

figure; % 新建一个图形窗口

plot(t,y); % 绘制加噪波形图

xlabel('t'); % 为X轴加标签

ylabel('y = sin(t) + 噪声'); % 为Y轴加标签

3)制作平滑波形图

【方法一】

利用移动平均法对加噪信号进行平滑处理,绘制平滑波形图

yy1 = smooth(y,30); % 利用移动平均法对y进行平滑处理

figure; % 新建一个图形窗口

plot(t,y,'k:'); % 绘制加噪波形图

hold on;

plot(t,yy1,'k','linewidth',3); % 绘制平滑后波形图

xlabel('t'); % 为X轴加标签

ylabel('moving'); % 为Y轴加标签

legend('加噪波形','平滑后波形');

【方法二】

利用lowess方法对加噪信号进行平滑处理,绘制平滑波形图

yy2 = smooth(y,30,'lowess'); % 利用lowess方法对y进行平滑处理

figure; % 新建一个图形窗口

plot(t,y,'k:'); % 绘制加噪波形图

hold on;

plot(t,yy2,'k','linewidth',3); % 绘制平滑后波形图

xlabel('t'); % 为X轴加标签

ylabel('lowess'); % 为Y轴加标签

legend('加噪波形','平滑后波形');

【方法三】

利用rlowess方法对加噪信号进行平滑处理,绘制平滑波形图

yy3 = smooth(y,30,'rlowess'); % 利用rlowess方法对y进行平滑处理

figure; % 新建一个图形窗口

plot(t,y,'k:'); % 绘制加噪波形图

hold on;

plot(t,yy3,'k','linewidth',3); % 绘制平滑后波形图

xlabel('t'); % 为X轴加标签

ylabel('rlowess'); % 为Y轴加标签

legend('加噪波形','平滑后波形');

【方法4】

利用loess方法对加噪信号进行平滑处理,绘制平滑波形图

yy4 = smooth(y,30,'loess'); % 利用loess方法对y进行平滑处理

figure; % 新建一个图形窗口

plot(t,y,'k:'); % 绘制加噪波形图

hold on;

plot(t,yy4,'k','linewidth',3); % 绘制平滑后波形图

xlabel('t'); % 为X轴加标签

ylabel('loess'); % 为Y轴加标签

legend('加噪波形','平滑后波形');

【方法五】

利用sgolay方法对加噪信号进行平滑处理,绘制平滑波形图

yy5 = smooth(y,30,'sgolay',3); % 利用sgolay方法对y进行平滑处理

figure; % 新建一个图形窗口

plot(t,y,'k:'); % 绘制加噪波形图

hold on;

plot(t,yy5,'k','linewidth',3); % 绘制平滑后波形图

xlabel('t'); % 为X轴加标签

ylabel('sgolay'); % 为Y轴加标签

legend('加噪波形','平滑后波形');

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

/阅读下一篇/ 返回网易首页 下载网易新闻客户端


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有